#ifndef DSPSIMULATOR_INSTINFO_H
#define DSPSIMULATOR_INSTINFO_H

#include <vector>
#include <simulator/type/type.h>

/**
 * InstInfo为指令信息的抽象基类，表示取指器从内存中取出一条指令所包含的指令信息
 */
class InstInfo {
protected:
    std::vector<u8> m_bits;     // 指令的bit数据
    u64 m_address;              // 指令所在的内存地址
public:
    InstInfo(const std::vector<u8> &bits, u64 address) :
            m_bits(bits), m_address(address) {};

    virtual ~InstInfo() = default;

    InstInfo(const InstInfo &instInfo) = default;

    /**
     * 获取指令的bit数据
     * @return 指令的bit数据
     */
    const std::vector<u8> &getBits() const { return m_bits; };

    /**
     * 获取指令所在的内存地址
     * @return 指令所在的内存地址
     */
    u64 getAddress() const { return m_address; }
};

#endif //DSPSIMULATOR_INSTINFO_H
